home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 November: Tool Chest / Dev.CD Nov 00 TC Disk 2.toast / mac / Sample Code / QuickTime / QuickTimeIntro / Play Movie w⁄Controller / Completed Lab / Edit.c next >
Encoding:
Text File  |  2000-10-06  |  3.1 KB  |  144 lines  |  [TEXT/CWIE]

  1. // Play Movie with Controller Sample
  2. // Based on QTShell
  3. // WWDC 2000
  4.  
  5. #include "ComApplication.h"
  6. #include "ComFramework.h"
  7. #include "MacFramework.h"
  8.  
  9. //////////
  10. //
  11. // HandleEditMenuItem
  12. // Perform the specified edit operation on the specified window.
  13. //
  14. //////////
  15.  
  16. void HandleEditMenuItem (WindowReference theWindow, UInt16 theMenuItem)
  17. {
  18.     WindowObject        myWindowObject = NULL;
  19.     MovieController     myMC = NULL;
  20.     Movie                 myEditMovie = NULL;                // the movie created by some editing operations
  21.     
  22.     // give the application-specific code a chance to intercept the menu item selection
  23.     if (QTApp_HandleMenu(theMenuItem))
  24.         return;
  25.     
  26.     myWindowObject = QTFrame_GetWindowObjectFromWindow(theWindow);
  27.     myMC = QTFrame_GetMCFromWindow(theWindow);
  28.     
  29.     // make sure we have a valid movie controller and a valid window object
  30.     if ((myMC == NULL) || (myWindowObject == NULL))
  31.         return;
  32.  
  33.     switch (theMenuItem) {
  34.     
  35.         case IDM_EDITUNDO:
  36.             MCUndo(myMC);
  37.             (**myWindowObject).fIsDirty = true;
  38.             break;
  39.  
  40.         case IDM_EDITCUT:
  41.             myEditMovie = MCCut(myMC);
  42.             (**myWindowObject).fIsDirty = true;
  43.             break;
  44.  
  45.         case IDM_EDITCOPY:
  46.             myEditMovie = MCCopy(myMC);
  47.             break;
  48.  
  49.         case IDM_EDITPASTE:
  50.             MCPaste(myMC, NULL);
  51.             (**myWindowObject).fIsDirty = true;
  52.             break;
  53.  
  54.         case IDM_EDITCLEAR:
  55.             MCClear(myMC);
  56.             (**myWindowObject).fIsDirty = true;
  57.             break;
  58.             
  59.         case IDM_EDITSELECTALL:
  60.             SelectAllMovie(myMC);
  61.             break;
  62.  
  63.         case IDM_EDITSELECTNONE:
  64.             SelectNoneMovie(myMC);
  65.             break;
  66.  
  67.         default:
  68.             break;
  69.     } // switch (theMenuItem)
  70.     
  71.     // place any cut or copied movie segment onto the scrap
  72.     if (myEditMovie != NULL) {
  73.         PutMovieOnScrap(myEditMovie, 0L);
  74.         DisposeMovie(myEditMovie);
  75.     }
  76. }
  77.  
  78. //////////
  79. //
  80. // SelectAllMovie
  81. // Select the entire movie associated with the specified movie controller.
  82. // 
  83. //////////
  84.  
  85. OSErr SelectAllMovie (MovieController theMC)
  86. {
  87.     TimeRecord            myTimeRecord;
  88.     Movie                 myMovie = NULL;
  89.     ComponentResult        myErr = noErr;
  90.     
  91.     if (theMC == NULL)
  92.         return(paramErr);
  93.     
  94.     myMovie = MCGetMovie(theMC);
  95.     if (myMovie == NULL)
  96.         return(paramErr);
  97.     
  98.     myTimeRecord.value.hi = 0;
  99.     myTimeRecord.value.lo = 0;
  100.     myTimeRecord.base = 0;
  101.     myTimeRecord.scale = GetMovieTimeScale(myMovie);    
  102.     myErr = MCDoAction(theMC, mcActionSetSelectionBegin, &myTimeRecord);
  103.     if (myErr != noErr)
  104.         return((OSErr)myErr);
  105.     
  106.     myTimeRecord.value.hi = 0;
  107.     myTimeRecord.value.lo = GetMovieDuration(myMovie);    
  108.     myTimeRecord.base = 0;
  109.     myTimeRecord.scale = GetMovieTimeScale(myMovie);    
  110.     myErr = MCDoAction(theMC, mcActionSetSelectionDuration, &myTimeRecord);
  111.     
  112.     return((OSErr)myErr);
  113. }
  114.  
  115.  
  116. //////////
  117. //
  118. // SelectNoneMovie
  119. // Select none of the movie associated with the specified movie controller.
  120. // 
  121. //////////
  122.  
  123. OSErr SelectNoneMovie (MovieController theMC)
  124. {
  125.     TimeRecord            myTimeRecord;
  126.     Movie                 myMovie = NULL;
  127.     ComponentResult        myErr = noErr;
  128.     
  129.     if (theMC == NULL)
  130.         return(paramErr);
  131.     
  132.     myMovie = MCGetMovie(theMC);
  133.     if (myMovie == NULL)
  134.         return(paramErr);
  135.     
  136.     myTimeRecord.value.hi = 0;
  137.     myTimeRecord.value.lo = 0;    
  138.     myTimeRecord.base = 0;
  139.     myTimeRecord.scale = GetMovieTimeScale(myMovie);    
  140.     myErr = MCDoAction(theMC, mcActionSetSelectionDuration, &myTimeRecord);
  141.     
  142.     return((OSErr)myErr);
  143. }
  144.